In cluster computing, a compute cluster is a set of computers connected over a network with resource usage within the cluster coordinated by a workload manager. Typically, a user submits a job (a request to run an instance of an application) to the workload manager. The resources required to run the job are specified by the user with the job submission. The workload manager assigns idle resources to the job when available, and runs the job.
In some environments, multiple compute clusters may be located in different parts of the world. The workload of each compute cluster may be managed by a workload scheduler that runs local to the cluster. In some cases, a resource may be shared among multiple independent clusters. For example, an organization may purchase a number of floating software licenses from a software vendor. Each license permits the organization to run an instance of an application. Thus, certain resources may need to be allocated according to some defined limit across the different compute clusters of the organization. In some instances, a static allocation per consumer/user may be used. This method imposes a limit on the amount of the resource that can be used for certain compute clusters such that the sum of the limits does not exceed the total amount of the resource. The local workload manager may be responsible for enforcing these limits. If there is a requirement to distribute fairly among consumers/users, then the amount of the resource that each consumer can use may be limited/apportioned. When a region/consumer is not using its assigned amount, the resources may remain idle.
In some environments, resources may be distributed among a number of consumers/users according to a configured resource sharing policy. In this scenario, a user may define a set of resources (usually, a set of hosts) that is to be shared. The user also configures a hierarchy (i.e. a rooted tree) with consumers at leaves of the tree. Each non-root node also has an associated share. Periodically, the resources may be reallocated among the consumers. In doing so, an estimate of the need of each consumer (which is computed by the software that manages the consumer) may be obtained and the resource is distributed among the consumers according to the configured sharing policy.